package io;

import java.util.ArrayList;
import java.util.List;

/**
 * Clase que representa una suscripción, con sus atributos correspondientes.
 *
 * @author Nicolás Garay
 * @author Alejandro Jacquet
 * @author Rita Romani
 */
public class SubscriptionDTO {

    /** Atributo que representa el nombre de la suscripción. */
    private String nombre;
    /** Atributo que representa la dirección de la suscripción. */
    private String direccion; 
    /** Atributo que determina si la suscripción se encuentra activa o no. */
    private boolean activo;
    /** Atributo que contiene una lista con objetos de la clase Feed correspondientes a la suscripción. */
    private List<Feed> listaFeeds = new ArrayList();
    /** Atributo que determina si la lectura de Feed en la suscripción se realizó de forma exitosa. */
    private boolean lecturaExitosa = true;
    
    /**
     * Constructor de la clase, al crear una instancia inicializa los atributos
     * nombre, direccion, activo.
     *
     * @param nombre String nombre de la suscripción
     * @param direccion String url de la suscripción
     * @param activo boolean determina si la suscripción se encuentra activa o
     * no
     */
    public SubscriptionDTO(String nombre, String direccion, boolean activo) {
        this.nombre = nombre;
        this.direccion = direccion;
        this.activo = activo;
    }

    /**
     * Método que retorna el nombre de la suscripción.
     *
     * @return String nombre de la suscripción
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * Método que retorna la dirección de la suscripción.
     *
     * @return String url de la suscripción
     */
    public String getDireccion() {
        return direccion;
    }

    /**
     * Método que retorna el valor del atributo activo de la suscripción.
     *
     * @return boolean atributo activo
     */
    public boolean getActivo() {
        return activo;
    }

    /**
     * Método que retorna la lista de objetos Feed correspondientes a una
     * suscripción.
     *
     * @return List<Feed> lista de Feed
     */
    public List<Feed> getListaFeeds() {
        return listaFeeds;
    }

    /**
     * Método que setea una lista de objetos Feed a la suscripción.
     *
     * @param listaFeeds List<Feed>
     */
    public void setListaFeeds(List<Feed> listaFeeds) {
        this.listaFeeds = listaFeeds;
    }

    /**
     * Método que devuelve el valor del atributo lecturaExitosa
     *
     * @return boolean atributo lecturaExitosa
     */
    public boolean isLecturaExitosa() {
        return lecturaExitosa;
    }

    /**
     * Método que setea un valor para el atributo lecturaExitosa.
     *
     * @param lecturaExitosa boolean
     */
    public void setLecturaExitosa(boolean lecturaExitosa) {
        this.lecturaExitosa = lecturaExitosa;
    }

    /**
     * Método que sobreescribe el método toString de la clase java.lang.Object.
     *
     * @return String valor del atributo nombre de la suscripción.
     */
    @Override
    public String toString() {
        return nombre;
    }

    /**
     * Método que permite comparar si un objeto SubscriptionDTO pasado como
     * parámetro es igual al objeto SubscriptionDTO que ejecuta el método. El
     * criterio que usa en la comparación es que los nombres de las
     * suscripciones sean iguales.
     *
     * @param subscription SubscriptionDTO
     * @return boolean que determina si son iguales o no
     */
    public boolean equals(SubscriptionDTO subscription) {
        if (this.nombre.equals(subscription.nombre)) {
            return true;
        } else {
            return false;
        }
    }
}
